home *** CD-ROM | disk | FTP | other *** search
/ NeXTSTEP 3.3 (Developer)…68k, x86, SPARC, PA-RISC] / NeXTSTEP 3.3 Dev Intel.iso / NextDeveloper / Headers / mach / hppa / thread_status.h < prev    next >
Text File  |  1995-02-14  |  5KB  |  163 lines

  1. /*
  2.  * Copyright (c) 1993 NeXT Computer, Inc.
  3.  *
  4.  * HPPA    External thread state.
  5.  *
  6.  */
  7.  
  8. #ifndef    _HPPA_THREAD_STATE_ 
  9. #define    _HPPA_THREAD_STATE_
  10.  
  11. #import <mach/hppa/boolean.h>
  12.  
  13. #define    HPPA_INTEGER_THREAD_STATE     1
  14. #define    HPPA_FRAME_THREAD_STATE     2
  15. #define    HPPA_FP_THREAD_STATE     3
  16. #define HPPA_MISC_THREAD_STATE     4
  17.  
  18. /*
  19.  * Flow control information that can
  20.  * be changed from user state (with
  21.  * some restrictions on psw).
  22.  */
  23. struct hp_pa_frame_thread_state {
  24.     unsigned long    ts_pcsq_front;    /* instruction address space front */
  25.     unsigned long    ts_pcsq_back;    /* instruction address space back */
  26.     unsigned long    ts_pcoq_front;    /* instruction offset space front */
  27.     unsigned long    ts_pcoq_back;    /* instruction offset space back */
  28.     unsigned long    ts_psw;        /* process status word */
  29.     unsigned long    ts_unaligned_faults;    /* number of unaligned data references READ-ONLY */
  30.     unsigned long    ts_fault_address;    /* address of failing page fault READ-ONLY */
  31. /*
  32.  * A step range is a range of address that
  33.  * will be executed with out generating a single
  34.  * step event. If both values are 0 no stepping
  35.  * will occur. Otherwise the program will run while:
  36.  *
  37.  *    if (step_range_start <= step_range_stop)
  38.  *        pcoq0 >= step_range_start && pcoq0 < step_range_stop 
  39.  *    if (step_range_start > step_range_stop)
  40.  *        pcoq0 < step_range_stop && pcoq0 >= step_range_start 
  41.  *
  42.  * notice that setting step_range_start and step_range_stop to the
  43.  * same non-zero value will execute only one instruction due to action
  44.  * of the pc queue. (Yes, nullified instructions count)
  45.  */
  46.     unsigned long    ts_step_range_start;
  47.     unsigned long    ts_step_range_stop;
  48.  
  49.     /* Generate an exception when OS assists with an alignment fault */
  50.     boolean_t    ts_alignment_trap_reflect;
  51.  
  52.     /* Generate an exception when OS assists with an FP fault */
  53.     boolean_t    ts_execution_trap_reflect;
  54. };
  55.  
  56. /*
  57.  * The unsigned longeger state that may be changed by any
  58.  * process in user space.
  59.  */
  60. typedef struct hp_pa_integer_thread_state {
  61.     unsigned long    ts_gr1;        /* the user's general registers */
  62.     unsigned long    ts_gr2;
  63.     unsigned long    ts_gr3;
  64.     unsigned long    ts_gr4;
  65.     unsigned long    ts_gr5;
  66.     unsigned long    ts_gr6;
  67.     unsigned long    ts_gr7;
  68.     unsigned long    ts_gr8;
  69.     unsigned long    ts_gr9;
  70.     unsigned long    ts_gr10;
  71.     unsigned long    ts_gr11;
  72.     unsigned long    ts_gr12;
  73.     unsigned long    ts_gr13;
  74.     unsigned long    ts_gr14;
  75.     unsigned long    ts_gr15;
  76.     unsigned long    ts_gr16;
  77.     unsigned long    ts_gr17;
  78.     unsigned long    ts_gr18;
  79.     unsigned long    ts_gr19;
  80.     unsigned long    ts_gr20;
  81.     unsigned long    ts_gr21;
  82.     unsigned long    ts_gr22;
  83.     unsigned long    ts_gr23;
  84.     unsigned long    ts_gr24;
  85.     unsigned long    ts_gr25;
  86.     unsigned long    ts_gr26;
  87.     unsigned long    ts_gr27;
  88.     unsigned long    ts_gr28;
  89.     unsigned long    ts_gr29;
  90.     unsigned long    ts_gr30;
  91.     unsigned long    ts_gr31;
  92.     unsigned long    ts_sr0;        /* the user's space registgers */
  93.     unsigned long    ts_sr1;
  94.     unsigned long    ts_sr2;
  95.     unsigned long    ts_sr3;
  96.     unsigned long    ts_sar;        /* the user's shift amount register */
  97. } hp_pa_integer_thread_state_t;
  98.  
  99. /*
  100.  * The floating point state that may be changed by any
  101.  * process in user space.
  102.  */
  103. typedef struct hp_pa_fp_thread_state {
  104.     double    ts_fp0;        /* all of the execution unit registers */
  105.     double    ts_fp1;
  106.     double    ts_fp2;
  107.     double    ts_fp3;
  108.     double    ts_fp4;
  109.     double    ts_fp5;
  110.     double    ts_fp6;
  111.     double    ts_fp7;
  112.     double    ts_fp8;
  113.     double    ts_fp9;
  114.     double    ts_fp10;
  115.     double    ts_fp11;
  116.     double    ts_fp12;
  117.     double    ts_fp13;
  118.     double    ts_fp14;
  119.     double    ts_fp15;
  120.     double    ts_fp16;
  121.     double    ts_fp17;
  122.     double    ts_fp18;
  123.     double    ts_fp19;
  124.     double    ts_fp20;
  125.     double    ts_fp21;
  126.     double    ts_fp22;
  127.     double    ts_fp23;
  128.     double    ts_fp24;
  129.     double    ts_fp25;
  130.     double    ts_fp26;
  131.     double    ts_fp27;
  132.     double    ts_fp28;
  133.     double    ts_fp29;
  134.     double    ts_fp30;
  135.     double    ts_fp31;
  136. } hp_pa_fp_thread_state_t;
  137.  
  138. /*
  139.  * Everything else from pcb_entry_state.
  140.  */
  141. typedef struct hp_pa_misc_thread_state {
  142.     unsigned long    ts_sr4;    
  143.     unsigned long    ts_sr5;
  144.     unsigned long    ts_sr6;
  145.     unsigned long    ts_sr7;
  146.     unsigned long    ts_recovery_counter;
  147.     unsigned long    ts_eiem;
  148.     unsigned long    ts_iir;
  149.     unsigned long    ts_isr;
  150.     unsigned long    ts_argument[6];
  151.     unsigned long    ts_return_pointer;
  152.     unsigned long    ts_static_link;
  153.     unsigned long    ts_clean_up;
  154.     unsigned long    ts_stub_return_pointer;
  155.     unsigned long    ts_previous_stack;
  156. } hp_pa_misc_thread_state_t;
  157.  
  158. #define    HPPA_INTEGER_THREAD_STATE_COUNT (sizeof(struct hp_pa_integer_thread_state) / sizeof(unsigned long))
  159. #define    HPPA_FRAME_THREAD_STATE_COUNT (sizeof(struct hp_pa_frame_thread_state) / sizeof(unsigned long))
  160. #define    HPPA_FP_THREAD_STATE_COUNT (sizeof(struct hp_pa_fp_thread_state) / sizeof(unsigned long))
  161.  
  162. #endif    /* _HPPA_THREAD_STATE_ */
  163.